package com.lyt.springboot.designPattern.chainResponsibilityPattern;

// Main.java
public class Main {
    public static void main(String[] args) {
        Handler handler1 = new SupportHandler(1);
        Handler handler2 = new SupportHandler(2);
        Handler handler3 = new SupportHandler(3);

        handler1.setNextHandler(handler2);
        handler2.setNextHandler(handler3);

        // 创建请求并处理
        handler1.handleRequest("Account issue");  // Level 1 should handle this
        handler1.handleRequest("Billing problem");  // Level 2 should handle this
        handler1.handleRequest("Customer service");  // Level 3 should handle this (or not, if no match)
        handler1.handleRequest("Software bug");  // No handler should match this specifically
    }


    /**
     * 核心：
     * 1. 链式处理： handleRequest,setNextHandler() 当前处理或者转到下一层处理
     * 2. 每个处理者都明确了自己的责任范围。
     * 3.每个请求都有机会被多个处理者处理。这在某些场景下是非常有用的，比如当一个请求需要经过多个阶段的审批或处理时。
     *
     * 4.举例：
     * 假设一个简单的例子：一个公司的请假审批流程。在这个流程中，员工提交请假申请后，该申请会首先被部门主管审批。
     * 如果部门主管同意，则申请会传递给人事部门；如果不同意，则流程结束。人事部门在收到申请后，会进行进一步的审核，并最终决定是否批准该请假申请。
     */
}